#include "cmalgdebug.h"

std::shared_ptr<outputImpl> cmalgdebug::outputImplPtr = std::make_shared<outputImpl>();
//cmalgdebug::cmalgdebug()
//{

//}

//实现打印QString数据类型
cmalgdebug& cmalgdebug::operator<<(const QString &sMsg)
{
    Write(sMsg);
    return *this;//返回MyDebug对象，这是重点
}

//实现打印String数据类型
cmalgdebug& cmalgdebug::operator<<(const  string &sMsg)
{
    QString s(sMsg.c_str());
    Write(s);
    return *this;//返回MyDebug对象，这是重点
}

//实现打印bool数据类型
cmalgdebug& cmalgdebug::operator<<(const bool &sMsg)
{
    QString s = sMsg ? QString("true") : QString("false");
    Write(s);
    return *this;//返回MyDebug对象，这是重点
}

cmalgdebug& cmalgdebug::operator<<(const char &sMsg)
{
    QString s = QString("%1").arg(sMsg);
    Write(s);
    return *this;
}

cmalgdebug& cmalgdebug::operator<<(const float &sMsg)
{
    QString s = QString("%1").arg(sMsg);
    Write(s);
    return *this;
}

cmalgdebug& cmalgdebug::operator<<(const double &sMsg)
{
    QString s = QString("%1").arg(sMsg);
    Write(s);
    return *this;
}

cmalgdebug& cmalgdebug::operator<<(const char *sMsg)
{
    QString s = QString("%1").arg(sMsg);
    Write(s);
    return *this;
}

cmalgdebug& cmalgdebug::operator<<(const int &sMsg)
{
    QString s = QString("%1").arg(sMsg);
    Write(s);
    return *this;
}

void cmalgdebug::Write(const QString &sMsg)
{
    outputImplPtr->push_back_msg(sMsg);
}

void cmalgdebug::write2Log(const QString &sMsg)
{

}

void cmalgdebug::write2Wnd(const QString &sMsg)
{

}
